home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Python / macshlglue.c < prev   
Text File  |  1996-02-29  |  2KB  |  72 lines

  1. /*
  2. ** Mac shared lib glue.
  3. */
  4.  
  5. #include <Quickdraw.h>
  6. #include <SegLoad.h>
  7. #include <FragLoad.h>
  8. #include <Files.h>
  9. #include <Resources.h>
  10.  
  11. #ifdef __MWERKS__
  12. #ifdef PRE_CW8
  13. /*
  14. ** This part is copied from MW Startup.c, which is
  15. **    Copyright © 1993 metrowerks inc. All Rights Reserved.
  16. */
  17. #include <setjmp.h>
  18. #include <stdio.h>
  19.  
  20. /* void    *__local_destructor_chain;    /*    chain of local objects that need destruction    */
  21.  
  22.     /*    public data        */
  23.  
  24. QDGlobals qd;                        /*    define the Quickdraw globals here!    */
  25. jmp_buf __program_exit;                /*    exit() does a longjmp() to here        */
  26. void (*__atexit_hook)(void);        /*    atexit()  sets this up if it is ever called    */
  27. void (*___atexit_hook)(void);        /*    _atexit() sets this up if it is ever called    */
  28. int __aborting;                        /*    abort() sets this and longjmps to __program_exit    */
  29. #endif
  30. #endif
  31.  
  32. /*
  33. ** Variables passed from shared lib initialization to PyMac_AddLibResources.
  34. */
  35. static int library_fss_valid;
  36. static FSSpec library_fss;
  37.  
  38. /*
  39. ** Routine called upon fragment load. We attempt to save the FSSpec from which we're
  40. ** loaded. We always return noErr (we just continue without the resources).
  41. */
  42. OSErr pascal
  43. PythonCore_init(InitBlockPtr data)
  44. {
  45.     /* Initialize C++ static data (if needed) */
  46.     __sinit();
  47.     
  48.     if ( data == nil ) return noErr;
  49.     if ( data->fragLocator.where == kOnDiskFlat ) {
  50.         library_fss = *data->fragLocator.u.onDisk.fileSpec;
  51.         library_fss_valid = 1;
  52.     } else if ( data->fragLocator.where == kOnDiskSegmented ) {
  53.         library_fss = *data->fragLocator.u.inSegs.fileSpec;
  54.         library_fss_valid = 1;
  55.     }
  56.     return noErr;
  57. }
  58.  
  59. /*
  60. ** Insert the library resources into the search path. Put them after
  61. ** the resources from the application (which we assume is the current
  62. ** resource file). Again, we ignore errors.
  63. */
  64. void
  65. PyMac_AddLibResources()
  66. {
  67.     if ( !library_fss_valid ) 
  68.         return;
  69.     (void)FSpOpenResFile(&library_fss, fsRdPerm);
  70. }
  71.  
  72.